# Copyright 2021 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

load("@rules_python//python:defs.bzl", "py_library")
load("//pw_build:python.bzl", "pw_py_binary", "pw_py_test")

package(default_visibility = ["//visibility:public"])

licenses(["notice"])

py_library(
    name = "pw_cli",
    srcs = [
        "pw_cli/__init__.py",
        "pw_cli/__main__.py",
        "pw_cli/aliases.py",
        "pw_cli/allowed_caller.py",
        "pw_cli/argument_types.py",
        "pw_cli/arguments.py",
        "pw_cli/branding.py",
        "pw_cli/collect_files.py",
        "pw_cli/color.py",
        "pw_cli/decorators.py",
        "pw_cli/diff.py",
        "pw_cli/env.py",
        "pw_cli/envparse.py",
        "pw_cli/file_filter.py",
        "pw_cli/git_repo.py",
        "pw_cli/interactive_prompts.py",
        "pw_cli/log.py",
        "pw_cli/multitool.py",
        "pw_cli/pigweed_aliases.py",
        "pw_cli/plugins.py",
        "pw_cli/plural.py",
        "pw_cli/process.py",
        "pw_cli/pw_command_plugins.py",
        "pw_cli/requires.py",
        "pw_cli/shell_completion/__init__.py",
        "pw_cli/shell_completion/fish/__init__.py",
        "pw_cli/shell_completion/zsh/__init__.py",
        "pw_cli/shell_completion/zsh/pw/__init__.py",
        "pw_cli/shell_completion/zsh/pw_build/__init__.py",
        "pw_cli/status_reporter.py",
        "pw_cli/tool_runner.py",
    ],
    imports = ["."],
    deps = [
        "//pw_cli_analytics/py:pw_cli_analytics",
        "@pigweed_python_packages//prompt_toolkit",
        "@pigweed_python_packages//psutil",
    ],
)

pw_py_binary(
    name = "log",
    srcs = [
        "pw_cli/log.py",
    ],
    deps = [
        ":pw_cli",
    ],
)

pw_py_test(
    name = "argument_types_test",
    size = "small",
    srcs = [
        "argument_types_test.py",
    ],
    deps = [
        ":pw_cli",
    ],
)

pw_py_test(
    name = "collect_files_test",
    size = "small",
    srcs = [
        "collect_files_test.py",
    ],
    deps = [
        ":pw_cli",
        "@pigweed_python_packages//pyfakefs",
    ],
)

pw_py_test(
    name = "envparse_test",
    size = "small",
    srcs = [
        "envparse_test.py",
    ],
    deps = [
        ":pw_cli",
    ],
)

pw_py_test(
    name = "file_filter_test",
    size = "small",
    srcs = [
        "file_filter_test.py",
    ],
    deps = [
        ":pw_cli",
    ],
)

pw_py_test(
    name = "git_repo_test",
    size = "small",
    srcs = [
        "git_repo_test.py",
    ],
    deps = [
        ":pw_cli",
        "@pigweed_python_packages//pyfakefs",
    ],
)

pw_py_test(
    name = "plugins_test",
    size = "small",
    srcs = [
        "plugins_test.py",
    ],
    deps = [
        ":pw_cli",
    ],
)

pw_py_test(
    name = "plural_test",
    size = "small",
    srcs = [
        "plural_test.py",
    ],
    deps = [
        ":pw_cli",
    ],
)

pw_py_test(
    name = "tool_runner_test",
    size = "small",
    srcs = [
        "tool_runner_test.py",
    ],
    deps = [
        ":pw_cli",
    ],
)

pw_py_test(
    name = "decorators_test",
    srcs = ["decorators_test.py"],
    deps = [":pw_cli"],
)

pw_py_test(
    name = "process_integration_test",
    srcs = ["process_integration_test.py"],
    deps = [":pw_cli"],
)
